import java.util.ArrayList;


public class Agenda {
    private ArrayList<Contato> trabalho = new ArrayList<Contato>();
    private ArrayList<Contato> amigo = new ArrayList<Contato>();

    public Agenda(){

    }

    public ArrayList<Contato> getTrabalho() {
        return trabalho;
    }

    public void setTrabalho(ArrayList<Contato> trabalho) {
        this.trabalho = trabalho;
    }

    public ArrayList<Contato> getAmigo() {
        return amigo;
    }

    public void setAmigo(ArrayList<Contato> amigo) {
        this.amigo = amigo;
    }

    public void adicionarContato(Contato contato, String lista){
        if(lista.equals("1")){
            trabalho.add(contato);
        }else{
            amigo.add(contato);
        }
    }

    public void removerContato(String nome){
        for (Contato contato : trabalho) {
            if( contato.getNome().equals(nome) ){
                trabalho.remove( contato );
            }
        }

        for (Contato contato : amigo) {
            if( contato.getNome().equals(nome) ){
                amigo.remove( contato );
            }
        }

    }

    public void listaContatos(String lista){
        if( lista.equals("1") ){
            System.out.println("_____________*LISTA TRABALHO*_____________");
            for (Contato contato : trabalho) {
                System.out.println( contato.toString() );
            }
        }else{
            System.out.println("_____________*LISTA AMIGO*_____________");
            for (Contato contato : amigo) {
                System.out.println( contato.toString() );
            }
        }
    }

    @Override
    public String toString(){
        String resultado = "";
        for (Contato contato : trabalho) {
            resultado += contato.toString() + "\n";
        }
        for (Contato contato : amigo) {
            resultado += contato.toString() + "\n";
        }
        return resultado;
    }


    public Contato maisVelho(String lista){
        Integer maior = 0;
        Contato objContato = null;

        if( lista.equals("1") ){
            for (Contato contato : trabalho) {
                if(maior<contato.getIdade()){
                    maior = contato.getIdade();
                    objContato = contato;
                }
            }
        }else{
            for (Contato contato : amigo) {
                if(maior<contato.getIdade()){
                    maior = contato.getIdade();
                    objContato = contato;
                }
            }
        }

        return objContato;
    }


    public Contato maisNovo(String lista){
        Integer menor = 99999;
        Contato objContato = null;

        if( lista.equals("1") ){
            for (Contato contato : trabalho) {
                if(menor>contato.getIdade()){
                    menor = contato.getIdade();
                    objContato = contato;
                }
            }
        }else{
            for (Contato contato : amigo) {
                if(menor>contato.getIdade()){
                    menor = contato.getIdade();
                    objContato = contato;
                }
            }
        }

        return objContato;
    }


    public ArrayList<Contato> redundante(){
        ArrayList<Contato> lista = new ArrayList<Contato>();

        for (Contato item : trabalho ) {
            for (Contato item2 : amigo ) {
                if (item.getNome().equals(item2.getNome())) {
                    lista.add(item2);
                }    
            }
        }
    return lista;
    }


    public ArrayList<Contato> faixaEtaria(Integer min, Integer max){
        ArrayList<Contato> lista = new ArrayList<Contato>();
        for(Contato item : amigo){
            if((item.getIdade()<max) &&(item.getIdade()>min)){
                lista.add(item);
            }
        }
        for(Contato item : trabalho){
            if((item.getIdade()<max) &&(item.getIdade()>min)){
                lista.add(item);
            }
        }
        return lista;
    }
}
